﻿Imports MySql.Data.MySqlClient

Public Class CAdmin

    Private conn As String = My.Settings.Conexion

#Region "Get"

    ''' <summary>
    ''' Retorna listado de perfiles activos
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetPerfiles() As DataSet
        Return Data.ExecuteDataSet(Me.conn, "GetPerfiles", Nothing)
    End Function

    ''' <summary>
    ''' Retorna listado de usuarios activos
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetUsuarios() As DataSet
        Return Data.ExecuteDataSet(Me.conn, "GetUsuarios", Nothing)
    End Function

    ''' <summary>
    ''' Retorna info del usuario necesaria para editarlo: Info basica y perfiles a los que pertenece
    ''' </summary>
    ''' <param name="idUsuario"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetUsuarioById(ByVal idUsuario As Integer) As DataSet
        Dim arrParam(1) As MySqlParameter
        arrParam(0) = New MySqlParameter("?varIdUsuario", idUsuario)
        Return Data.ExecuteDataSet(Me.conn, "GetUsuarioById", arrParam)
    End Function

    ''' <summary>
    ''' Retorna dataset con 2 tablas. La primera retorna todo el menú de la app, la segunda retorna el menu
    ''' sobre el que tiene permiso el perfil
    ''' </summary>
    ''' <param name="idperfil"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function GetPermisosPerfil(ByVal idperfil As Integer) As DataSet
        Dim arrParam(1) As MySqlParameter
        arrParam(0) = New MySqlParameter("?varIdPerfil", idperfil)
        Return Data.ExecuteDataSet(Me.conn, "GetPermisosPerfil", arrParam)
    End Function
#End Region

#Region "Actualizar"

    ''' <summary>
    ''' Crea o edita el perfil que le llega. Si el id que llega es cero lo inserta
    ''' </summary>
    ''' <param name="id"></param>
    ''' <param name="perfil"></param>
    ''' <remarks></remarks>
    Public Function ActualizarPerfil(ByVal id As Integer, ByVal perfil As String) As String
        Dim arrParam(3) As MySqlParameter
        arrParam(0) = New MySqlParameter("?idPerfil", id)
        arrParam(1) = New MySqlParameter("?nombrePerfil", perfil)
        arrParam(2) = New MySqlParameter("?retorno", MySqlDbType.VarChar, 200)
        arrParam(2).Direction = ParameterDirection.Output
        Data.ExecuteNonQuery(Me.conn, "ActualizarPerfil", arrParam)
        Return arrParam(2).Value
    End Function

    ''' <summary>
    ''' Crea o edita el usuario que le llega. Si el id que llega es cero lo inserta
    ''' </summary>
    ''' <param name="usuario"></param>
    ''' <param name="nombre"></param>
    ''' <param name="apellido"></param>
    ''' <param name="perfiles"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Function ActualizarUsuario(ByVal idusuario As Integer, ByVal usuario As String, ByVal nombre As String, ByVal apellido As String, ByVal perfiles As String) As String
        Dim arrParam(5) As MySqlParameter
        arrParam(0) = New MySqlParameter("?varIdUsuario", idusuario)
        arrParam(1) = New MySqlParameter("?varUsuario", usuario)
        arrParam(2) = New MySqlParameter("?varNombre", nombre)
        arrParam(3) = New MySqlParameter("?varApellido", apellido)
        arrParam(4) = New MySqlParameter("?varPerfiles", perfiles)
        arrParam(5) = New MySqlParameter("?retorno", MySqlDbType.VarChar, 200)
        arrParam(5).Direction = ParameterDirection.Output
        Data.ExecuteNonQuery(Me.conn, "ActualizarUsuario", arrParam)
        Return arrParam(5).Value
    End Function

    ''' <summary>
    ''' Actualiza los permisos del perfil que le llega
    ''' </summary>
    ''' <param name="idperfil"></param>
    ''' <param name="aereo">0 si no tiene permisos, 1 de lo contrario</param>
    ''' <param name="maritimo">0 si no tiene permisos, 1 de lo contrario</param>
    ''' <param name="menus">Id's de los menus sobre los que tiene permisos, separados por coma</param>
    ''' <remarks></remarks>
    Public Sub ActualizarPermisos(ByVal idperfil As Integer, ByVal aereo As Integer, ByVal maritimo As Integer, ByVal guias As Integer, ByVal menus As String)
        Dim arrParam(5) As MySqlParameter
        arrParam(0) = New MySqlParameter("?varIdPerfil", idperfil)
        arrParam(1) = New MySqlParameter("?varAereo", aereo)
        arrParam(2) = New MySqlParameter("?varMaritimo", maritimo)
        arrParam(3) = New MySqlParameter("?varGuias", maritimo)
        arrParam(4) = New MySqlParameter("?varMenus", menus)
        Data.ExecuteNonQuery(Me.conn, "ActualizarPermisos", arrParam)
    End Sub
#End Region

#Region "Eliminar"

    ''' <summary>
    ''' Marca como inactivo en la base de datos
    ''' </summary>
    ''' <param name="id"></param>
    ''' <remarks></remarks>
    Public Sub EliminarPerfil(ByVal id As Integer)
        Dim arrParam(1) As MySqlParameter
        arrParam(0) = New MySqlParameter("?idPerfil", id)
        Data.ExecuteNonQuery(Me.conn, "EliminarPerfil", arrParam)
    End Sub

    ''' <summary>
    ''' Marca como inactivo en la base de datos
    ''' </summary>
    ''' <param name="id"></param>
    ''' <remarks></remarks>
    Public Sub EliminarUsuario(ByVal id As Integer)
        Dim arrParam(1) As MySqlParameter
        arrParam(0) = New MySqlParameter("?idUsuario", id)
        Data.ExecuteNonQuery(Me.conn, "EliminarUsuario", arrParam)
    End Sub

#End Region

End Class
